import {getStorageFun,TOKEN_NAME} from './auth.js';
import qs from "qs";
import { BASE_URL,Authorization } from '@/utils/config.js'
import {getCurrentLanguage} from './index.js';

// utils/http.js (修改后的版本)
// const baseUrl = 'http://192.168.0.108:8087';

function request(options) {
	const { url, method = 'GET', data = {}, headers = {},isShowLoading=true } = options;

	// const token = uni.getStorageSync(tokenKey); // 获取token, 根据实际情况调整获取方式
	const token = getStorageFun(TOKEN_NAME); // 获取token, 根据实际情况调整获取方式
	const defaultHeaders = {
		// "Authorization":Authorization,
		'CS-AUTH': token ? token : '', // 如果存在token, 则添加到请求头中
		'content-type': ['post','POST'].includes(method) ? 'application/x-www-form-urlencoded' : 'application/json',
	};
	return new Promise((resolve, reject) => {
		const sysLanguage = getCurrentLanguage();
		let titleMsg = "數據加載中..."
		if(sysLanguage === "ja" || sysLanguage === "en"){
			titleMsg = "Data loading..."
		}
		console.log("sysLanguage",sysLanguage);
		// 清空 header 对象
		// this.header = {
		// 	"Accept-Language":sysLanguage,
		// }
		if(isShowLoading){
			// 请求之前做一些事
			uni.showLoading({
				title: titleMsg,
			})
		}
		uni.request({
			url: BASE_URL + url,
			method,
			data,
			header: {
				...defaultHeaders,
				...headers, // 使用展开运算符合并默认头和自定义头
				"Accept-Language":sysLanguage,
				// "Accept-Language":'en',
			},
			success: (res) => {
				
				if(isShowLoading){
					// 请求之前做一些事
					uni.hideLoading();
				}
				
				let data = res.data;
				if(data && typeof(data) === "string"){
					data = JSON.parse(data);
				}
				// console.log("datadata",data);
				if(data.status === 500){
					uni.showToast({
						title: "系统异常，请稍后再试",
						icon: 'none', // 可选 success/loading/none
						duration: 2000, // 持续时长，单位ms
						mask: false, // 是否显示透明蒙层，防止触摸穿透
					});
					return;
				}
				if (data.bizcode === 100) {
					resolve(data); // 成功时返回数据
				} else if (data.bizcode === 201) {
					if([201,200].includes(data.errcode)){
						uni.showToast({
							title: '登录失效，请重新登录',
							icon: 'none', // 可选 success/loading/none
							duration: 2000, // 持续时长，单位ms
							mask: false, // 是否显示透明蒙层，防止触摸穿透
							position: 'middle' // 位置，可选 top/middle/bottom
						});
					}else{
						uni.showToast({
							title: data.msg,
							icon: 'none', // 可选 success/loading/none
							duration: 2000, // 持续时长，单位ms
							mask: false, // 是否显示透明蒙层，防止触摸穿透
							position: 'middle' // 位置，可选 top/middle/bottom
						});
					}
					/**
					 * 205:已经有账号，返回登录页面
					 * 200 or 201：token失效，返回登录页面
					 */
					if([201,200,205].includes(data.errcode )){
						setTimeout(() => {
							uni.navigateTo({
								url:'/pages/login/login'
							})
						}, 2000);
					}
				} else {
					uni.showToast({
						title: data.msg,
						icon: 'none', // 可选 success/loading/none
						duration: 1500, // 持续时长，单位ms
					});
					setTimeout(()=>{
						// reject(data); // 其他错误情况返回错误信息
						resolve(data); // 成功时返回数据
					},1500)
				}
			},
			fail: (error) => {
				console.log("error",error);
				if(isShowLoading){
					// 请求之前做一些事
					uni.hideLoading();
				}
				uni.showToast({
					title: "服务器异常，稍后再试",
					icon: 'none', // 可选 success/loading/none
					duration: 2000, // 持续时长，单位ms
				});
				// reject(error); // 请求失败时返回错误信息
			},
		});
	});
}

export default request;
